home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload Trio 2 / Shareware Overload Trio Volume 2 (Chestnut CD-ROM).ISO / dir40 / pc37042.zip / DEMO / DEMOSSP.ALC < prev    next >
Text File  |  1987-08-09  |  10KB  |  439 lines

  1.     TITLE 'TESTSSP - TEST SCIENTIFIC SUBROUTINE PACKAGE'
  2. *
  3. * PGM-ID. TESTSSP.ALC
  4. * AUTHOR. DON HIGGINS
  5. * DATE.   07/24/87
  6. * REMARKS. SEE SSP.ALC AND FP87.DOC FOR MORE INFORMATION.
  7. * MAINTENANCE.
  8. *
  9. * 07/24/87 COPY FROM TESTFP AND MODIFY
  10. * 07/31/87 ADD RANGE TEST OF EXP TO DETECT FRACTION SIGN BUG
  11. * 08/08/87 ADD MOD, SIN, COS, TAN USING LIBRARY FUNCTIONS 14-17
  12. * 08/09/87 ALLOW FOR R15 RETURNING 80X87 EXCEPTION BITS INCLUDING PRECISION
  13. *          ADD SIN/COS/TAN RANGE TEST -2*PI,2*PI,PI/6
  14. TESTSSP  CSECT
  15.     LA    R10,0(R15)
  16.     LA    R11,2048(R10)
  17.     LA    R11,2048(R11)
  18.     USING TESTSSP,R10
  19.     USING TESTSSP+4096,R11
  20.     LA    DE,=C'TESTSSP START$'
  21.     SVC   WTO
  22. * ALOG
  23.     LA    DE,=C'TESTSSP STARTING ALOG VALUE TESTS$'
  24.     SVC   WTO
  25.     LA    R1,FPLE2
  26.     SVC   FPSVC      FR0=LOGE(2) 80X87 CONSTANT
  27.     LER   FR2,FR0    FR2=FR0
  28.     LE    FR0,=E'2'
  29.     L     R15,=V(ALOG)
  30.     BALR  R14,R15    FR0=LOGE(2) CALC'ED
  31.     SER   FR0,FR2
  32.     LPER  FR0,FR0
  33.     CD    FR0,DERR VERFIFY RESULT WITHIN DERR
  34.     BAL   R14,CCL
  35.     LA    R1,FPLE2
  36.     SVC   FPSVC      FR0=LOGE(2) 80X87 CONSTANT
  37.     LNER  FR2,FR0
  38.     LE    FR0,=E'.5'
  39.     L     R15,=V(ALOG)
  40.     BALR  R14,R15    FR0=LOGE(2) CALC'ED
  41.     SER   FR0,FR2
  42.     LPER  FR0,FR0
  43.     CD    FR0,DERR VERFIFY RESULT WITHIN DERR
  44.     BAL   R14,CCL
  45. * ALOG10
  46.     LA    DE,=C'TESTSSP STARTING ALOG10 VALUE TESTS$'
  47.     SVC   WTO
  48.     LA    R1,FPLT2
  49.     SVC   FPSVC      FR0=LOG10(2) 80X87 CONSTANT
  50.     LER   FR2,FR0    FR2=FR0
  51.     LE    FR0,=E'2'
  52.     L     R15,=V(ALOG10)
  53.     BALR  R14,R15    FR0=LOG10(2) CALC'ED
  54.     SER   FR0,FR2
  55.     LPER  FR0,FR0
  56.     CD    FR0,DERR VERFIFY RESULT WITHIN DERR
  57.     BAL   R14,CCL
  58.     LA    R1,FPLT2
  59.     SVC   FPSVC      FR0=LOG10(2) 80X87 CONSTANT
  60.     LNER  FR2,FR0
  61.     LE    FR0,=E'.5'
  62.     L     R15,=V(ALOG10)
  63.     BALR  R14,R15    FR0=LOG10(2) CALC'ED
  64.     SER   FR0,FR2
  65.     LPER  FR0,FR0
  66.     CD    FR0,DERR VERFIFY RESULT WITHIN DERR
  67.     BAL   R14,CCL
  68. * ATAN
  69.     LA    DE,=C'TESTSSP STARTING ATAN VALUE TESTS$'
  70.     SVC   WTO
  71.     LA    R1,FPPI
  72.     SVC   FPSVC      FR0=PI
  73.     DD    FR0,=D'4'  FR0=PI/4
  74.     LER   FR2,FR0
  75.     LE    FR0,=E'1'
  76.     L     R15,=V(ATAN)
  77.     BALR  R14,R15    FR0=ATAN(1.0)=PI/4
  78.     SER   FR0,FR2
  79.     LPER  FR0,FR0
  80.     CD    FR0,DERR VERFIFY RESULT WITHIN DERR
  81.     BAL   R14,CCL
  82. * COS
  83.     LA    DE,=C'TESTSSP STARTING COS VALUE TESTS$'
  84.     SVC   WTO
  85.     SER   FR0,FR0
  86.     L     R15,=V(COS)
  87.     BALR  R14,R15    FR0=COS(0.0)=1.0
  88.     SE    FR0,=E'1'
  89.     LPER  FR0,FR0
  90.     CD    FR0,DERR VERFIFY RESULT WITHIN DERR
  91.     BAL   R14,CCL
  92.     LA    R1,FPPI
  93.     SVC   FPSVC      FR0=PI
  94.     DD    FR0,=D'4'  FR0=PI/4
  95.     L     R15,=V(COS)
  96.     BALR  R14,R15    FR0=COS(PI/4)=SQRT(2)/2.
  97.     LER   FR2,FR0
  98.     LE    FR0,=E'2'
  99.     L     R15,=V(SQRT)
  100.     BALR  R14,R15
  101.     DE    FR0,=E'2'
  102.     SER   FR0,FR2
  103.     LPER  FR0,FR0
  104.     CD    FR0,DERR VERFIFY RESULT WITHIN DERR
  105.     BAL   R14,CCL
  106.     LA    R1,FPPI
  107.     SVC   FPSVC      FR0=PI
  108.     DD    FR0,=D'2'  FR0=PI/2
  109.     L     R15,=V(COS)
  110.     BALR  R14,R15    FR0=COS(PI/2)=0.0
  111.     LPER  FR0,FR0
  112.     CD    FR0,DERR VERFIFY RESULT WITHIN DERR
  113.     BAL   R14,CCL
  114. * EXP
  115.     LA    DE,=C'TESTSSP STARTING EXP VALUE TESTS$'
  116.     SVC   WTO
  117.     LA    R1,FPLE2
  118.     SVC   FPSVC      FR0=LOGE(2) 80X87 CONSTANT
  119.     L     R15,=V(EXP)
  120.     BALR  R14,R15    FR0=E**LOGE(2)=2 CALC'ED
  121.     SE    FR0,=E'2'
  122.     LPER  FR0,FR0
  123.     CD    FR0,DERR VERFIFY RESULT WITHIN DERR
  124.     BAL   R14,CCL
  125.     LE    FR0,=E'0'
  126.     L     R15,=V(EXP)
  127.     BALR  R14,R15    FR0=E**(0) CALC'ED
  128.     SE    FR0,=E'1'
  129.     LPER  FR0,FR0
  130.     CD    FR0,DERR VERFIFY RESULT WITHIN DERR
  131.     BAL   R14,CCL
  132.     LA    R1,FPLE2
  133.     SVC   FPSVC      FR0=LOGE(2) 80X87 CONSTANT
  134.     LNER  FR0,FR0    FR0=-LOGE(2)
  135.     L     R15,=V(EXP)
  136.     BALR  R14,R15    FR0=E**(-LOGE(2)) CALC'ED
  137.     SE    FR0,=E'0.5'
  138.     LPER  FR0,FR0
  139.     CD    FR0,DERR VERFIFY RESULT WITHIN DERR
  140.     BAL   R14,CCL
  141.     LE    FR0,=E'10'
  142.     L     R15,=V(ALOG)
  143.     BALR  R14,R15    FR0=LOGE(10) CALC'ED
  144.     L     R15,=V(EXP)
  145.     BALR  R14,R15    FR0=E**(LOGE(10)) CALC'ED
  146.     SE    FR0,=E'10'
  147.     LPER  FR0,FR0
  148.     CD    FR0,DERR VERFIFY RESULT WITHIN DERR
  149.     BAL   R14,CCL
  150.     LE    FR0,=E'0.1'
  151.     L     R15,=V(ALOG)
  152.     BALR  R14,R15    FR0=LOGE(0.1) CALC'ED
  153.     L     R15,=V(EXP)
  154.     BALR  R14,R15    FR0=E**(LOGE(0.1)) CALC'ED
  155.     SE    FR0,=E'0.1'
  156.     LPER  FR0,FR0
  157.     CD    FR0,DERR VERFIFY RESULT WITHIN DERR
  158.     BAL   R14,CCL
  159. * INT
  160.     LA    DE,=C'TESTSSP STARTING INT VALUE TESTS$'
  161.     SVC   WTO
  162.     LE    FR0,=E'123.456'
  163.     L     R15,=V(INT)
  164.     BALR  R14,R15
  165.     CL    R0,=F'123'
  166.     BAL   R14,CCE
  167.     LE    FR0,=E'-123.456'
  168.     L     R15,=V(INT)
  169.     BALR  R14,R15
  170.     CL    R0,=F'-123'
  171.     BAL   R14,CCE
  172. * MOD
  173.     LA    DE,=C'TESTSSP STARTING MOD VALUE TESTS$'
  174.     SVC   WTO
  175.     LD    FR0,=D'123.456'
  176.     LD    FR2,=D'1'
  177.     L     R15,=V(MOD)
  178.     BALR  R14,R15
  179.     SD    FR0,=D'0.456'
  180.     LPER  FR0,FR0
  181.     CD    FR0,DERR
  182.     BAL   R14,CCL
  183.     LD    FR0,=D'10'
  184.     LD    FR2,=D'3'
  185.     L     R15,=V(MOD)
  186.     BALR  R14,R15
  187.     SD    FR0,=D'1'
  188.     LPER  FR0,FR0
  189.     CD    FR0,DERR
  190.     BAL   R14,CCL
  191. * REAL
  192.     LA    DE,=C'TESTSSP STARTING REAL VALUE TESTS$'
  193.     SVC   WTO
  194.     L     R0,=F'123'
  195.     L     R15,=V(REAL)
  196.     BALR  R14,R15
  197.     CE    FR0,=E'123'
  198.     BAL   R14,CCE
  199.     L     R0,=F'-123'
  200.     L     R15,=V(REAL)
  201.     BALR  R14,R15
  202.     CE    FR0,=E'-123'
  203.     BAL   R14,CCE
  204. * SIN
  205.     LA    DE,=C'TESTSSP STARTING SIN VALUE TESTS$'
  206.     SVC   WTO
  207.     SER   FR0,FR0
  208.     L     R15,=V(SIN)
  209.     BALR  R14,R15    FR0=SIN(0.0)=1.0
  210.     SE    FR0,=E'0'
  211.     LPER  FR0,FR0
  212.     CD    FR0,DERR VERFIFY RESULT WITHIN DERR
  213.     BAL   R14,CCL
  214.     LA    R1,FPPI
  215.     SVC   FPSVC      FR0=PI
  216.     DD    FR0,=D'4'  FR0=PI/4
  217.     L     R15,=V(SIN)
  218.     BALR  R14,R15    FR0=SIN(PI/4)=SQRT(2)/2.
  219.     LER   FR2,FR0
  220.     LE    FR0,=E'2'
  221.     L     R15,=V(SQRT)
  222.     BALR  R14,R15
  223.     DE    FR0,=E'2'
  224.     SER   FR0,FR2
  225.     LPER  FR0,FR0
  226.     CD    FR0,DERR VERFIFY RESULT WITHIN DERR
  227.     BAL   R14,CCL
  228.     LA    R1,FPPI
  229.     SVC   FPSVC      FR0=PI
  230.     DD    FR0,=D'2'  FR0=PI/2
  231.     L     R15,=V(SIN)
  232.     BALR  R14,R15    FR0=SIN(PI/2)=1.0
  233.     SE    FR0,=E'1'
  234.     LPER  FR0,FR0
  235.     CD    FR0,DERR VERFIFY RESULT WITHIN DERR
  236.     BAL   R14,CCL
  237. * SQRT
  238.     LA    DE,=C'TESTSSP STARTING SQRT VALUE TESTS$'
  239.     SVC   WTO
  240.     LE    FR0,=E'4'
  241.     L     R15,=V(SQRT)
  242.     BALR  R14,R15
  243.     CE    FR0,=E'2'
  244.     BAL   R14,CCE
  245.     LD    FR0,=D'2.25'
  246.     L     R15,=V(SQRT)
  247.     BALR  R14,R15
  248.     CD    FR0,=D'1.5'
  249.     BAL   R14,CCE
  250.     LD    FR0,=D'12345'
  251.     MDR   FR0,FR0
  252.     L     R15,=V(SQRT)
  253.     BALR  R14,R15
  254.     SD    FR0,=D'12345'
  255.     LPER  FR0,FR0
  256.     CD    FR0,DERR VERFIFY RESULT WITHIN DERR
  257.     BAL   R14,CCL
  258. * TAN
  259.     LA    DE,=C'TESTSSP STARTING TAN VALUE TESTS$'
  260.     SVC   WTO
  261.     SER   FR0,FR0
  262.     L     R15,=V(TAN)
  263.     BALR  R14,R15    FR0=TAN(0.0)=0.0
  264.     SE    FR0,=E'0'
  265.     LPER  FR0,FR0
  266.     CD    FR0,DERR VERFIFY RESULT WITHIN DERR
  267.     BAL   R14,CCL
  268.     LA    R1,FPPI
  269.     SVC   FPSVC      FR0=PI
  270.     DD    FR0,=D'4'  FR0=PI/4
  271.     L     R15,=V(TAN)
  272.     BALR  R14,R15    FR0=TAN(PI/4)=1.0
  273.     SE    FR0,=E'1'
  274.     LPER  FR0,FR0
  275.     CD    FR0,DERR VERFIFY RESULT WITHIN DERR
  276.     BAL   R14,CCL
  277.     LA    R1,FPPI
  278.     SVC   FPSVC      FR0=PI
  279.     DD    FR0,=D'2'  FR0=PI/2
  280.     L     R15,=V(TAN)
  281.     BALR  R14,R15    FR0=TAN(PI/2)=1.0*16**63 PLUS DIVIDE CHK ERR
  282.     LTR   R15,R15
  283.     BAL   R14,CCH    VERIFY RC>0 DUE TO EXCEPTION
  284.     STE   FR0,WE0
  285.     NI    WE0,X'7F'
  286.     CLC   WE0,=X'7F800000' ABS COMPARE WITH FP87 MAX CONSTANT
  287.     BAL   R14,CCE
  288.     LA    DE,=C'TESTSSP STARTING RANGE TESTS$'
  289.     SVC   WTO
  290. * SIN/COS/TAN RANGE TEST -2*PI,2*PI,PI/6
  291.     LA    DE,=C'TESTSSP STARTING SIN/COS RANGE TESTS$'
  292.     SVC   WTO
  293.     LA    R1,FPPI
  294.     SVC   FPSVC      FR0=PI
  295.     LDR   FR6,FR0
  296.     DD    FR6,=D'6'  FR6=PI/6   INCR ARG.
  297.     LDR   FR4,FR0
  298.     ADR   FR4,FR4    FR4=2*PI   MAX. ARG.
  299.     LNDR  FR2,FR4    FR2=-2*PI  CURRENT ARG.
  300.     LA    R2,1
  301. SLOOP    EQU   *
  302.     LER   FR0,FR2
  303.     L     R15,=V(SIN)
  304.     BALR  R14,R15    FR0=SIN(X)
  305.     STD   FR0,SAVSIN
  306.     LDR   FR0,FR2
  307.     SDR   FR0,FR6
  308.     SDR   FR0,FR6
  309.     SDR   FR0,FR6
  310.     L     R15,=V(COS)
  311.     BALR  R14,R15    FR0=COS(X-PI/2)
  312.     SD    FR0,SAVSIN
  313.     LPDR  FR0,FR0
  314.     CD    FR0,DERR VERFIFY SIN(X)=COS(X-PI/2) WITHIN DERR
  315.     BAL   R14,CCL
  316.     SP    PTAN,=P'1' DEC SKIP COUNTER
  317.     BNZ   TSTTAN
  318.     ZAP   PTAN,=P'6' RESET COUNTER  TO SKIP AGAIN AT +PI
  319.     B     SKPTAN
  320. TSTTAN   EQU   *
  321.     LER   FR0,FR2
  322.     L     R15,=V(COS)
  323.     BALR  R14,R15    FR0=COS(X)
  324.     STD   FR0,SAVCOS
  325.     LD    FR0,SAVSIN
  326.     DD    FR0,SAVCOS
  327.     STD   FR0,SAVTAN SIN(X)/COS(X)
  328.     LER   FR0,FR2
  329.     L     R15,=V(TAN)
  330.     BALR  R14,R15    FR0=TAN(X)
  331.     SD    FR0,SAVTAN
  332.     LPDR  FR0,FR0
  333.     CD    FR0,DERR VERFIFY TAN(X)=SIN(X)/COS(X) WITHIN DERR
  334.     BAL   R14,CCL
  335. SKPTAN   EQU   *           SKIP TAN TEST FOR COS(X)=0
  336.     LA    R2,1(R2)
  337.     ADR   FR2,FR6
  338.     CDR   FR2,FR4
  339.     BL    SLOOP
  340. * EXP AND ALOG RANGE TEST 0.1 TO 10 BY 0.1
  341.     LA    DE,=C'TESTSSP STARTING EXP/ALOG 0.1,10,0.1 RANGE TESTS$'
  342.     SVC   WTO
  343.     LE    FR2,=E'0.1'  X
  344.     LA    R2,1
  345. XLOOP    EQU   *
  346.     LER   FR0,FR2
  347.     L     R15,=V(ALOG)
  348.     BALR  R14,R15    FR0=LOGE(X) CALC'ED
  349.     L     R15,=V(EXP)
  350.     BALR  R14,R15    FR0=E**(LOGE(X)) CALC'ED
  351.     SER   FR0,FR2
  352.     LPER  FR0,FR0
  353.     CD    FR0,DERR VERFIFY RESULT WITHIN DERR
  354.     BAL   R14,CCL
  355.     LA    R2,1(R2)
  356.     AE    FR2,=E'0.1'
  357.     CE    FR2,=E'10'
  358.     BL    XLOOP
  359. TESTEOJ  EQU   *
  360.     LA    DE,CMSG
  361.     SVC   WTO
  362.     LA    DE,=C'TESTSSP END$'
  363.     SVC   WTO
  364.     SVC   TRACE
  365.     DC    C'ERX '
  366.     SVC   EXIT
  367. CCE      BE    CCOK
  368. CCBAD    SVC   TRACE
  369.     DC    C'BUG'
  370. CCOK     LA    R12,1(R12)
  371.     ST    R14,SAVELINK
  372.     L     R13,SAVELINK
  373.     LA    R4,DCOUNT+2
  374.     LA    R3,0
  375. CLOOP    IC    R3,0(R4)
  376.     O     R3,=X'000000F0'  CHANGE BLANK TO DIGIT
  377.     A     R3,=F'1'
  378.     C     R3,=X'000000FA'
  379.     BL    CDONE
  380.     L     R3,=X'000000F0'
  381.     STC   R3,0(R4)
  382.     S     R4,=F'1'
  383.     B     CLOOP
  384. CDONE    STC   R3,0(R4)
  385.     B     0(R14)
  386. CCL      BL    CCOK
  387.     B     CCBAD
  388. CCH      BH    CCOK
  389.     B     CCBAD
  390. CCNE     BNE   CCOK
  391.     B     CCBAD
  392. CC3      BO    CCOK
  393.     B     CCBAD
  394. SAVELINK DC    A(0)
  395. *
  396. * DATA
  397. *
  398. FR0      EQU   0
  399. FR2      EQU   2
  400. FR4      EQU   4
  401. FR6      EQU   6
  402. R0       EQU   0
  403. R1       EQU   1
  404. R2       EQU   2
  405. R3       EQU   3
  406. R4       EQU   4
  407. R10      EQU   10 BASE 1
  408. R11      EQU   11 BASE 2
  409. R12      EQU   12
  410. R13      EQU   13
  411. R14      EQU   14
  412. R15      EQU   15
  413. WE0      DC    E'0'
  414. WD0      DC    D'0'
  415. NAN      DC    X'E060000000000000'
  416. CMSG     DC    C'TOTAL TESTS = '
  417. DCOUNT   DC    C'   '
  418.     DC    C'$'
  419.     DC    0F'0',C'* FWORD*'
  420. FWORD    DC    F'0'
  421. HWORD    DC    H'0'
  422. SPIE     EQU   14 SET SPIE
  423. TRACE    EQU   9 TRACE SVC - MUST BE FOLLOWED BY 3 CHAR. ID
  424. WTO      EQU   209 CPM WRITE TO OPERATOR (CPM SVC 9)
  425. EXIT     EQU   0 EXIT EMULTOR SVC
  426. DE       EQU   2 REG. 2 MAPS TO DE FOR CP/M SVC'S
  427. FPSVC    EQU   35
  428. FPLT2    EQU   1
  429. FPLE2    EQU   2
  430. FPL2E    EQU   3
  431. FPL2T    EQU   4
  432. FPPI     EQU   5
  433. DERR     DC    D'1E-12' ERROR THRESHOLD
  434. SAVSIN   DC    D'0'
  435. SAVCOS   DC    D'0'
  436. SAVTAN   DC    D'0'
  437. PTAN     DC    P'4'     SET TO SKIP TAN TEST AT PI/2
  438.     END   TESTSSP
  439.